昨天是直接用 pwntools 產一個 execve('/bin/sh', 0, 0)
的 shellcode
那今天來講個 open/read/write 用 pwntools 來產
基本上好像常見也就需要寫這兩種 shellcode 而已
是說也是可以自己寫 assembly code ,然後編譯之後再把裡面要的那串
shellcode 拉出來,不過這邊都是本著能懶則懶的方式來進行XD
底下是用 pwntools 產生出來的
#!/usr/bin/env python
from pwn import *
context.arch = 'arm'
shellcode = ''
shellcode += shellcraft.pushstr('./flag')
shellcode += shellcraft.open('sp', 0, 0)
shellcode += shellcraft.read('r0', 'sp', 100)
shellcode += shellcraft.write(1, 'sp', 100)
sh = asm(shellcode)
這邊首先是先將檔案位置 push 到 stack 頂端,之後使用 open 來
開啟存在 stack 頂端的檔案位置,之後用 read 讀檔和 write 來輸出
最後的那個變數 sh 就存著我們最終了 shellcode 了!!